package br.com.mestrefamiliar.mestres;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;

import br.com.mestrefamiliar.familia.Familia;

@Entity
@Table(name = "mestres_familiares")
public class Mestres implements Serializable{
	
	private static final long serialVersionUID = 6989474001796295922L;
	
	@Id
	@GeneratedValue
	private Integer cod_mestres;
	private String nomeDupla;
	private String integrante_a;
	private String integrante_b;
	
	@ManyToOne
	@OnDelete(action=OnDeleteAction.CASCADE)
	@JoinColumn(name = "cod_familia", nullable = false)
	private Familia familia;
	
	public Integer getCod_mestres() {
		return cod_mestres;
	}
	public void setCod_mestres(Integer cod_mestres) {
		this.cod_mestres = cod_mestres;
	}
	public String getNomeDupla() {
		return nomeDupla;
	}
	public void setNomeDupla(String nomeDupla) {
		this.nomeDupla = nomeDupla;
	}
	public String getIntegrante_a() {
		return integrante_a;
	}
	public void setIntegrante_a(String integrante_a) {
		this.integrante_a = integrante_a;
	}
	public String getIntegrante_b() {
		return integrante_b;
	}
	public void setIntegrante_b(String integrante_b) {
		this.integrante_b = integrante_b;
	}
	
	public Familia getFamilia() {
		return familia;
	}
	public void setFamilia(Familia familia) {
		this.familia = familia;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((cod_mestres == null) ? 0 : cod_mestres.hashCode());
		result = prime * result + ((familia == null) ? 0 : familia.hashCode());
		result = prime * result
				+ ((integrante_a == null) ? 0 : integrante_a.hashCode());
		result = prime * result
				+ ((integrante_b == null) ? 0 : integrante_b.hashCode());
		result = prime * result
				+ ((nomeDupla == null) ? 0 : nomeDupla.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Mestres other = (Mestres) obj;
		if (cod_mestres == null) {
			if (other.cod_mestres != null)
				return false;
		} else if (!cod_mestres.equals(other.cod_mestres))
			return false;
		if (familia == null) {
			if (other.familia != null)
				return false;
		} else if (!familia.equals(other.familia))
			return false;
		if (integrante_a == null) {
			if (other.integrante_a != null)
				return false;
		} else if (!integrante_a.equals(other.integrante_a))
			return false;
		if (integrante_b == null) {
			if (other.integrante_b != null)
				return false;
		} else if (!integrante_b.equals(other.integrante_b))
			return false;
		if (nomeDupla == null) {
			if (other.nomeDupla != null)
				return false;
		} else if (!nomeDupla.equals(other.nomeDupla))
			return false;
		return true;
	}
	
}
